// 路由入口
import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router';
import type { NavigationGuardNext, RouteLocationNormalized } from 'vue-router';
import { ElMessage } from 'element-plus';

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    redirect: '/login', // 默认重定向到登录页面
  },
  {
    path: '/login',
    name: 'login',
    component: () => import('@/views/login/index.vue'),
    meta: {
      title: '登录',
      requiresAuth: false, // 不需要登录
    },
  },
  {
    path: '/home',
    name: 'home',
    component: () => import('@/views/home/index.vue'),
    meta: {
      title: '首页',
      requiresAuth: true, // 需要登录
    },
  },
];

const router = createRouter({
  history: createWebHistory(),
  routes,
});

// 全局前置守卫
router.beforeEach(
  (
    to: RouteLocationNormalized,
    _from: RouteLocationNormalized,
    next: NavigationGuardNext
  ) => {
    console.log(to, _from, next);
    // 检查是否登录
    const token = localStorage.getItem('token_vite_vue3');
    // 如果目标路由需要登录，但用户未登录，则跳转到登录页
    if (to.meta.requiresAuth && !token) {
      ElMessage({
        message: '未授权访问，请先登录',
        type: 'error',
      });
      next('/login');

      // 如果用户已登录但尝试访问登录页，则跳转到登录页，并清除登录状态
    } else if (to.path === '/login' && token) {
      ElMessage({
        message: '已登录，无需重复登录',
        type: 'warning',
      });
      next('/home');
      // 否则放行
    } else {
      next();
    }
  }
);

export default router;
